{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_boston" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = load_boston()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['data', 'target', 'feature_names', 'DESCR'])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.keys()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [ { "data": { "text/plain": [ "array([[6.3200e-03, 1.8000e+01, 2.3100e+00, ..., 1.5300e+01, 3.9690e+02,\n", " 4.9800e+00],\n", " [2.7310e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9690e+02,\n", " 9.1400e+00],\n", " [2.7290e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9283e+02,\n", " 4.0300e+00],\n", " ...,\n", " [6.0760e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,\n", " 5.6400e+00],\n", " [1.0959e-01, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9345e+02,\n", " 6.4800e+00],\n", " [4.7410e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,\n", " 7.8800e+00]])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['data']" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(404, 13)\n", "(102, 13)\n", "(404,)\n", "(102,)\n" ] } ], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "train_data, test_data, train_target, test_target = train_test_split(data['data'], data['target'], test_size=0.2)\n", "\n", "print(train_data.shape)\n", "print(test_data.shape)\n", "print(train_target.shape)\n", "print(test_target.shape)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import MinMaxScaler\n", "\n", "model = MinMaxScaler().fit(train_data)\n", "train_data_mms = model.transform(train_data)\n", "test_data_mms = model.transform(test_data)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-1.76956027e-04, 0.00000000e+00, -1.68621701e-02, 0.00000000e+00,\n", " -7.92181070e-01, -6.82314620e-01, -2.98661174e-02, -1.02719857e-01,\n", " -4.34782609e-02, -3.56870229e-01, -1.34042553e+00, -8.06898986e-04,\n", " -4.77373068e-02])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.min_" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from sklearn.decomposition import PCA\n", "\n", "model = PCA(n_components=8).fit(train_data_mms)\n", "train_data_mms = model.transform(train_data_mms)\n", "test_data_mms = model.transform(test_data_mms)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn.cluster import KMeans\n", "\n", "data = load_iris()\n", "model = KMeans(n_clusters=3).fit(data['data'])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2,\n", " 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2,\n", " 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.labels_" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[5.006 , 3.418 , 1.464 , 0.244 ],\n", " [5.9016129 , 2.7483871 , 4.39354839, 1.43387097],\n", " [6.85 , 3.07368421, 5.74210526, 2.07105263]])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.cluster_centers_" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "for i in range(3):\n", " plt.scatter(data['data'][model.labels_ == i, 0], data['data'][model.labels_ == i, 1])\n", " \n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5525919445213676" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import silhouette_score\n", "fo\n", "silhouette_score(data['data'], model.labels_)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# 数据导入\n", "from sklearn.datasets import load_breast_cancer\n", "data = load_breast_cancer()\n", "x = data['data']\n", "y = data['target']" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 划分训练集、测试集\n", "from sklearn.model_selection import train_test_split\n", "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# 模型预处理\n", "from sklearn.preprocessing import StandardScaler\n", "model = StandardScaler().fit(x_train)\n", "x_train_ss = model.transform(x_train)\n", "x_test_ss = model.transform(x_test)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# 分类模型构建\n", "from sklearn.svm import SVC\n", "model = SVC().fit(x_train_ss, y_train)\n", "y_pre = model.predict(x_test_ss)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9736842105263158" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.score(x_test_ss, y_test)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0\n", "0.9565217391304348\n", "0.9777777777777777\n" ] } ], "source": [ "from sklearn.metrics import recall_score, precision_score, f1_score, roc_curve\n", "print(recall_score(y_test, y_pre))\n", "print(precision_score(y_test, y_pre))\n", "print(f1_score(y_test, y_pre))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAEwJJREFUeJzt3W+MXFd9xvHn2V2vE/+LY++agp1gFzmAq5KKLAFVCEJRi52+sJB4kYCIGoEsqwTxMlGlwgveFKFKCBFiWVEU8QarKhGYypBWqiCV0rTZSCGJiYy2piQOVDM2ITtrZ2c9u7++mPF6stk/1+u7M3vP+X4kS3vvnOz8Do6eHM695xxHhAAAaRnodwEAgPIR7gCQIMIdABJEuANAggh3AEgQ4Q4ACSLcASBBhDsAJIhwB4AEDfXri0dGRmLv3r39+noAqKTnnnvufESMrtSub+G+d+9ejY+P9+vrAaCSbP+mSDumZQAgQYQ7ACSIcAeABBHuAJAgwh0AErRiuNt+zHbN9ktLfG7b37Y9YfsF2x8sv0wAwLUoMnJ/XNLBZT4/JGl/588RSY9cf1kAgOux4nvuEfGU7b3LNDks6XvRPq/vGdvbbb8zIn5XUo1r5mKzpcef/l81L8/2uxQAGRnbu0Mfu23FdUjXpYxFTLslvdp1fa5z723hbvuI2qN73XrrrSV89fX52Zm6vvnkGUmS3ediAGTj6MffU4lwLywijks6LkljY2N9P5n7/yanJUnPf/UvtX3TcJ+rAYDylPG2zGuSbum63tO5t+7VG00NDw7ophs39LsUAChVGeF+UtJ9nbdmPiLpjSrMt0tSrTGt0a0bZeZkACRmxWkZ29+XdJekEdvnJH1N0gZJiohjkk5JulvShKRLku5fq2LLVm80Nbp1Y7/LAIDSFXlb5t4VPg9JXyqtoh6qN5q6ZcemfpcBAKXLeoVqrdHULkbuABKUbbhfnp3T7y/OMC0DIEnZhvv5qaYkadfWG/pcCQCUL9twr01eCXdG7gDSk2241xvtcGdaBkCKsg33Wifcd20j3AGkJ+Nwb289MLKFcAeQnmzDvd5oasfmYW0YzPZ/AgAJyzbZeMcdQMqyDXe2HgCQMsIdABKUZbhHhOqNJguYACQry3B/483LmpmdY+QOIFlZhvv8O+6EO4BE5RnubD0AIHFZhnt9qr2AiWkZAKnKMtznR+7beKAKIE15hnujqU3Dg9qyccWDqACgkrIMd95xB5C6LMO91pjmYSqApGUZ7ixgApC6LMO9xrQMgMRlF+7Tl2fVmG4R7gCSll24c7wegBxkF+5XTmDigSqAlOUX7vNbD/BAFUC6sgv3+hTTMgDSl1241yabGhywdm4e7ncpALBmsgv3eqOpkS3DGhhwv0sBgDWTXbjXGtNMyQBIXqFwt33Q9hnbE7YfWuTzm2z/2PYvbJ+2fX/5pZajxupUABlYMdxtD0p6WNIhSQck3Wv7wIJmX5L0y4i4XdJdkv7R9rqc1K43mhrdwsgdQNqKjNzvlDQREWcjYkbSCUmHF7QJSVttW9IWSb+X1Cq10hLMzoXOTzW1axvhDiBtRcJ9t6RXu67Pde51+46k90v6raQXJX0lIuZKqbBEFy42NRcsYAKQvrIeqH5K0vOS3iXpzyR9x/a2hY1sH7E9bnu8Xq+X9NXFsfUAgFwUCffXJN3Sdb2nc6/b/ZKeiLYJSb+W9L6FvygijkfEWESMjY6OrrbmVavNhzsPVAGkrUi4Pytpv+19nYek90g6uaDNK5I+KUm23yHpvZLOllloGerzWw8wcgeQthUPEY2Ilu0HJD0paVDSYxFx2vbRzufHJH1d0uO2X5RkSQ9GxPk1rHtV2HoAQC4KnRAdEacknVpw71jXz7+V9Ffllla+2uS0tt0wpBs2DPa7FABYU1mtUK1PNbVrG/PtANKXVbjXJlnABCAPeYV7gwVMAPKQTbhHBFsPAMhGNuE+1WzpzcuzjNwBZCGbcL+ygIkdIQHkIJtwZ+sBADnJJtyvjtwJdwDpyyfcJ6clMS0DIA/ZhHt9qqnhoQFtu7HQolwAqLR8wr2zgKl9nggApC2fcOcEJgAZySbc2XoAQE7yCffGNCN3ANnIItxnWnN6/dJljW7hTRkAecgi3M93Dulg5A4gF1mEOwuYAOQmi3Bn6wEAucki3GsNVqcCyEse4T7ZlC3t3DLc71IAoCeyCPf6VFM7Ng1rw2AW3QWAPMK9Ntlkvh1AVrII9/oU4Q4gL3mE++Q0D1MBZCX5cI8INg0DkJ3kw/0Ply7r8mywaRiArCQf7vOrUxm5A8hIBuHOAiYA+Uk+3Nl6AECOkg93Ng0DkKP0w32yqc3Dg9q8kYOxAeSjULjbPmj7jO0J2w8t0eYu28/bPm375+WWuXosYAKQoxWHs7YHJT0s6S8lnZP0rO2TEfHLrjbbJX1X0sGIeMX2rrUq+FrVWMAEIENFRu53SpqIiLMRMSPphKTDC9p8VtITEfGKJEVErdwyV4+RO4AcFQn33ZJe7bo+17nX7TZJN9v+me3nbN+32C+yfcT2uO3xer2+uoqvUZ1NwwBkqKwHqkOS7pD015I+Jenvbd+2sFFEHI+IsYgYGx0dLemrl/bmzKwazRYLmABkp8grJK9JuqXrek/nXrdzki5ExEVJF20/Jel2Sb8qpcpVmn/Hna0HAGSmyMj9WUn7be+zPSzpHkknF7T5kaSP2h6yvUnShyW9XG6p125+deo2HqgCyMuKI/eIaNl+QNKTkgYlPRYRp20f7Xx+LCJetv1TSS9ImpP0aES8tJaFF8ECJgC5KrSyJyJOSTq14N6xBdfflPTN8kq7fmw9ACBXSa9QrTWmNTRg7djEwdgA8pJ0uNcbTY1s2aiBAfe7FADoqaTDvdbgHXcAeUo73CebPEwFkKWkw52tBwDkKtlwn50LXZhi5A4gT8mG+4WppuZCGmUBE4AMJRvuNbYeAJCxZMP9ygImNg0DkKNkw31+Xxnm3AFkKNlwvzJyH2FaBkCGkg33WqOpm27coBs2DPa7FADouWTDvc7qVAAZSzbcaw3ecQeQr4TDfZpwB5CtJMM9IpiWAZC1JMO90Wxp+vKcdm1ldSqAPCUZ7rVJFjAByFuS4V5n6wEAmUsy3OdXpzJyB5CpJMP96sHYzLkDyFOy4T48NKBtNwz1uxQA6Iskw/3KAiabg7EB5CnJcOcddwC5SzLcWZ0KIHeJhnuTBUwAspZcuDdbs/rDpctMywDIWnLhfn5qRhInMAHIW3LhXptkARMAJBfuV7ceYM4dQL4Khbvtg7bP2J6w/dAy7T5ku2X7M+WVeG1qDTYNA4AVw932oKSHJR2SdEDSvbYPLNHuG5L+tewir0Wt0ZQt7dw83M8yAKCviozc75Q0ERFnI2JG0glJhxdp92VJP5BUK7G+a1ZvNLVz87CGBpObcQKAwook4G5Jr3Zdn+vcm2d7t6RPS3qkvNJWp96YZsMwANkra3j7LUkPRsTcco1sH7E9bnu8Xq+X9NVvxdYDACAV2TbxNUm3dF3v6dzrNibpRGejrhFJd9tuRcQPuxtFxHFJxyVpbGwsVlv0cmqNpva/Y+ta/GoAqIwi4f6spP2296kd6vdI+mx3g4jYd+Vn249L+peFwd4Lc3Ptg7FZwAQgdyuGe0S0bD8g6UlJg5Iei4jTto92Pj+2xjUW9oc3L6s1F0zLAMheodMsIuKUpFML7i0a6hHxN9df1urMH6/HA1UAmUvqfcHaJAuYAEBKLNyvbj1AuAPIW1LhXps/GJtwB5C3xMJ9WpuHB7V5IwdjA8hbUuFebzS1axsPUwEgqXCvsToVACQlFu7nCXcAkJRYuNdYnQoAkhIK90szLU01WyxgAgAlFO51XoMEgHnJhPv88XqEOwAkFO5sPQAA85IJ93pn0zC2HgCAhMK91mhqaMC6eRMHYwNAUuE+smWjBgbc71IAoO+SCff21gNMyQCAlFC4s4AJAK5KJtzrbD0AAPOSCPfW7JwuXGxqlNWpACApkXC/cHFGESxgAoArkgh3th4AgLdKItxrnQVMjNwBoC2NcJ9k5A4A3ZIId6ZlAOCtkgj3WqOp7Zs2aOPQYL9LAYB1IYlwrzeabBgGAF2SCPdaY5qtBwCgSyLh3uR4PQDoUvlwjwi2HgCABSof7pPTLTVbc7zjDgBdKh/u8ycwEe4AMK9QuNs+aPuM7QnbDy3y+edsv2D7RdtP2769/FIXV+MddwB4mxXD3fagpIclHZJ0QNK9tg8saPZrSR+PiD+V9HVJx8sudClXFjDxQBUArioycr9T0kREnI2IGUknJB3ubhART0fE653LZyTtKbfMpbH1AAC8XZFw3y3p1a7rc517S/mCpJ8s9oHtI7bHbY/X6/XiVS6jPtXUxqEBbbthqJTfBwApKPWBqu1PqB3uDy72eUQcj4ixiBgbHR0t5Ttrk+0FTDYHYwPAFUWGu69JuqXrek/n3lvY/oCkRyUdiogL5ZS3svoUWw8AwEJFRu7PStpve5/tYUn3SDrZ3cD2rZKekPT5iPhV+WUurTbJ6lQAWGjFcI+IlqQHJD0p6WVJ/xQRp20ftX200+yrknZK+q7t522Pr1nFC9QaTfaVAYAFCj2FjIhTkk4tuHes6+cvSvpiuaWtrNma1RtvXmZaBgAWqPQK1fl33Bm5A8BbVDrcayxgAoBFVTrcOV4PABZX6XC/OnIn3AGgW6XDvT45LVvasXm436UAwLpS7XCfamrn5o0aGqx0NwCgdJVOxfYCJqZkAGChSod7fYrj9QBgMZUOd0buALC4yob73Fzo/BRbDwDAYiob7q9fmlFrLth6AAAWUdlwn3/HfRurUwFgocqHOw9UAeDtKhvudVanAsCSKhvutca0JEbuALCY6ob7ZFNbNg5p0zAHYwPAQpUN9/oU77gDwFKqG+6TrE4FgKVUN9zZegAAllTZcK9NTnMCEwAsoZLhfrHZ0sWZWbYeAIAlVDLc54/XY+sBAFhUJcP96tYDhDsALKai4c4CJgBYTiXD/erWAzxQBYDFVDLca42mNgxa22/c0O9SAGBdqma4TzY1smWjBgbc71IAYF2qZLiz9QAALK+S4V6bnNYo8+0AsKRKhvt5th4AgGUVCnfbB22fsT1h+6FFPrftb3c+f8H2B8svta01O6cLF2eYlgGAZawY7rYHJT0s6ZCkA5LutX1gQbNDkvZ3/hyR9EjJdc47PzWjCBYwAcByiozc75Q0ERFnI2JG0glJhxe0OSzpe9H2jKTttt9Zcq2S2HoAAIooEu67Jb3adX2uc+9a25TiyurUXdt4oAoAS+npA1XbR2yP2x6v1+ur+h3bN23QwT/5I73rJsIdAJZS5ADS1yTd0nW9p3PvWtsoIo5LOi5JY2NjcU2Vdtzx7h264/M7VvOPAkA2iozcn5W03/Y+28OS7pF0ckGbk5Lu67w18xFJb0TE70quFQBQ0Ioj94ho2X5A0pOSBiU9FhGnbR/tfH5M0ilJd0uakHRJ0v1rVzIAYCVFpmUUEafUDvDue8e6fg5JXyq3NADAalVyhSoAYHmEOwAkiHAHgAQR7gCQIMIdABLk9osuffhiuy7pN6v8x0cknS+xnCqgz3mgz3m4nj6/OyJGV2rUt3C/HrbHI2Ks33X0En3OA33OQy/6zLQMACSIcAeABFU13I/3u4A+oM95oM95WPM+V3LOHQCwvKqO3AEAy1jX4b6eDubulQJ9/lynry/aftr27f2os0wr9bmr3Ydst2x/ppf1rYUifbZ9l+3nbZ+2/fNe11i2Av9u32T7x7Z/0elzpXeXtf2Y7Zrtl5b4fG3zKyLW5R+1txf+H0l/LGlY0i8kHVjQ5m5JP5FkSR+R9F/9rrsHff5zSTd3fj6UQ5+72v272ruTfqbfdffg73m7pF9KurVzvavfdfegz38n6Rudn0cl/V7ScL9rv44+f0zSByW9tMTna5pf63nkvq4O5u6RFfscEU9HxOudy2fUPvWqyor8PUvSlyX9QFKtl8WtkSJ9/qykJyLiFUmKiKr3u0ifQ9JW25a0Re1wb/W2zPJExFNq92Epa5pf6znc19XB3D1yrf35gtr/5a+yFftse7ekT0t6pId1raUif8+3SbrZ9s9sP2f7vp5VtzaK9Pk7kt4v6beSXpT0lYiY6015fbGm+VXosA6sP7Y/oXa4f7TftfTAtyQ9GBFz7UFdFoYk3SHpk5JulPSftp+JiF/1t6w19SlJz0v6C0nvkfRvtv8jIib7W1Y1redwL+1g7gop1B/bH5D0qKRDEXGhR7WtlSJ9HpN0ohPsI5Lutt2KiB/2psTSFenzOUkXIuKipIu2n5J0u6SqhnuRPt8v6R+iPSE9YfvXkt4n6b97U2LPrWl+redpmRwP5l6xz7ZvlfSEpM8nMopbsc8RsS8i9kbEXkn/LOlvKxzsUrF/t38k6aO2h2xvkvRhSS/3uM4yFenzK2r/PxXZfoek90o629Mqe2tN82vdjtwjw4O5C/b5q5J2SvpuZyTbigpvulSwz0kp0ueIeNn2TyW9IGlO0qMRsegrdVVQ8O/565Iet/2i2m+QPBgRld0t0vb3Jd0lacT2OUlfk7RB6k1+sUIVABK0nqdlAACrRLgDQIIIdwBIEOEOAAki3AEgQYQ7ACSIcAeABBHuAJCg/wevOynJB+TgSAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fpr, tpr, thresholds = roc_curve(y_test, y_pre)\n", "import matplotlib.pyplot as plt\n", "plt.plot(fpr, tpr)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function roc_curve in module sklearn.metrics.ranking:\n", "\n", "roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True)\n", " Compute Receiver operating characteristic (ROC)\n", " \n", " Note: this implementation is restricted to the binary classification task.\n", " \n", " Read more in the :ref:`User Guide `.\n", " \n", " Parameters\n", " ----------\n", " \n", " y_true : array, shape = [n_samples]\n", " True binary labels in range {0, 1} or {-1, 1}. If labels are not\n", " binary, pos_label should be explicitly given.\n", " \n", " y_score : array, shape = [n_samples]\n", " Target scores, can either be probability estimates of the positive\n", " class, confidence values, or non-thresholded measure of decisions\n", " (as returned by \"decision_function\" on some classifiers).\n", " \n", " pos_label : int or str, default=None\n", " Label considered as positive and others are considered negative.\n", " \n", " sample_weight : array-like of shape = [n_samples], optional\n", " Sample weights.\n", " \n", " drop_intermediate : boolean, optional (default=True)\n", " Whether to drop some suboptimal thresholds which would not appear\n", " on a plotted ROC curve. This is useful in order to create lighter\n", " ROC curves.\n", " \n", " .. versionadded:: 0.17\n", " parameter *drop_intermediate*.\n", " \n", " Returns\n", " -------\n", " fpr : array, shape = [>2]\n", " Increasing false positive rates such that element i is the false\n", " positive rate of predictions with score >= thresholds[i].\n", " \n", " tpr : array, shape = [>2]\n", " Increasing true positive rates such that element i is the true\n", " positive rate of predictions with score >= thresholds[i].\n", " \n", " thresholds : array, shape = [n_thresholds]\n", " Decreasing thresholds on the decision function used to compute\n", " fpr and tpr. `thresholds[0]` represents no instances being predicted\n", " and is arbitrarily set to `max(y_score) + 1`.\n", " \n", " See also\n", " --------\n", " roc_auc_score : Compute Area Under the Curve (AUC) from prediction scores\n", " \n", " Notes\n", " -----\n", " Since the thresholds are sorted from low to high values, they\n", " are reversed upon returning them to ensure they correspond to both ``fpr``\n", " and ``tpr``, which are sorted in reversed order during their calculation.\n", " \n", " References\n", " ----------\n", " .. [1] `Wikipedia entry for the Receiver operating characteristic\n", " `_\n", " \n", " \n", " Examples\n", " --------\n", " >>> import numpy as np\n", " >>> from sklearn import metrics\n", " >>> y = np.array([1, 1, 2, 2])\n", " >>> scores = np.array([0.1, 0.4, 0.35, 0.8])\n", " >>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)\n", " >>> fpr\n", " array([ 0. , 0.5, 0.5, 1. ])\n", " >>> tpr\n", " array([ 0.5, 0.5, 1. , 1. ])\n", " >>> thresholds\n", " array([ 0.8 , 0.4 , 0.35, 0.1 ])\n", "\n" ] } ], "source": [ "help(roc_curve)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_boston\n", "data = load_boston()\n", "x = data['data']\n", "y = data['target']" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LinearRegression\n", "model = LinearRegression().fit(x_train, y_train)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "y_pre = model.predict(x_test)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.plot(range(len(y_test)), y_test)\n", "plt.plot(range(len(y_pre)), y_pre)\n", "plt.legend(['real', 'predict'])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7752573895354288" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import mean_squared_error, r2_score\n", "mean_squared_error(y_true=y_test, y_pred=y_pre)\n", "r2_score(y_true=y_test, y_pred=y_pre)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }